package com.atkusen.mini.minidanke.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

/**
 * spring boot提供了解决跨域问题的解决方案。使用CorsWebFilter
 * 但是配置成功了之后，还是出现不能访问的情况。这是人人脚手架也配置了跨域配置
 *   //    @Override
 * //    public void addCorsMappings(CorsRegistry registry) {
 * //        registry.addMapping("/**")
 * //            .allowedOrigins("*")
 * //            .allowCredentials(true)
 * //            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
 * //            .maxAge(3600);
 * //    }
 * 注释这段配置就可以实现前端的登入
 * 使用网关之后是需要这个配置跨域问题
 */
@Configuration
public class MiniCorsConfiguration {

    @Bean
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //1、配置跨域
        //允许那些请求头可以跨域
        corsConfiguration.addAllowedHeader("*");
        //允许那些请求方式get,post,put,delete
        corsConfiguration.addAllowedMethod("*");
        //允许那些域名可以跨域
        corsConfiguration.addAllowedOrigin("*");
        //允许携带cookie跨域
        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }
}
